#ifndef __HAL_BEEP_H_
#define __HAL_BEEP_H_

///<头文件根据自身工程调整
#include "r_smc_entry.h"
#include "typedefine.h"
#include "TimeBaseTick.h"
#include "Common.h"
#include "HalPortDef.h"

///<音乐蜂鸣器、普通蜂鸣器，二选一
#define U8_HAL_MUSIC_BEEP_EN    (1)   ///<音乐蜂鸣器使能
#define U8_HAL_COMMON_BEEP_EN   (0)   ///<普通蜂鸣器使能

#define U8_HAL_BEEP_NUM (1)           ///<蜂鸣器数量
#define U8_HAL_BEEP_CH  (0)           ///<蜂鸣器通道0

#define U8_BUZ_ENABLE   (0)           ///<蜂鸣器使能
#define U8_BUZ_DISABLE  (1)           ///<蜂鸣器禁止


#if(U8_HAL_MUSIC_BEEP_EN == 1)

#define U8_MAX_BUZZER_TIMES		6		//蜂鸣器每个类型最多鸣叫次数

//设定蜂鸣器鸣叫类型	
typedef enum
{
    U8_NO_SOUND = 0,
    U8_POWER_UP_SOUND = 1,  ///<上电
    U8_POWER_ON_SOUND,      ///<开机
    U8_POWER_OFF_SOUND,     ///<关机
    U8_SINGLE_SOUND,        ///<单声蜂鸣器声音
    U8_DOUBLE_SOUND,        ///<两声蜂鸣器声音
    U8_UP_SOUND,            ///<上调蜂鸣器声音
    U8_DOWN_SOUND,          ///<下调蜂鸣器声音
    U8_LONG_SOUND,          ///<长响
    U8_BUZ_TYPE_SIZE,
}EN_BUZ_TYPE;

typedef struct 
{
	uint16 u16Freq;		        // 频率		单位: Hz
	uint16 u16BuzOnTime;		// 打开时间  单位:500us
	uint16 u16BuzOffTime;		// 关闭时间  单位:500us
}ST_SOUND_TYPE;

void HalBeepSoundSelect(uint8 u8Chn, uint8 u8SoundType);
void HalBeepDisableSet(uint8 u8Chn, uint8 u8Set);
void HalBeepInit(void);
void HalBeepProc(void);


#elif(U8_HAL_COMMON_BEEP_EN == 1)

#define U16_BEEP1_TIM         (51)    ///<4ms为单位，响一声的时间长度为205ms
#define U16_BEEP_ON_2S_TIM    (500)   ///<4ms为单位，响一声的时间长度为2000ms
#define U16_BEEP_CYCLE_SET    (125)   ///<8K频率，转换为周期填写，PWM输出设置要求，单位时间1us，50%占空比
enum
{
    U8_NO_SOUND = 0,
    U8_BEEP_SINGLE_SOUND,
    U8_BEEP_DOBULE_SOUND,
};
///<蜂鸣器声音设置
///<1:表示响一声， 2：表示响两声，3：表示响三声
void HalBeepSoundSet(uint8 u8Chn, uint8 u8Sound, uint16 u16SoundTim_4ms);
void HalBeepDisableSet(uint8 u8Chn, uint8 u8Set);
void HalBeepInit(void);
void HalBeepProc(void);


#endif

#endif


